package easy

import "strconv"

/*
时间复杂度:O(log26(N))
空间复杂度:O(1)

1.本质上是26进制,但是每一位不是从[0, 26), 而是[1,26], 所以每次循环前先columnNumber--, 然后再求当前位的数字(范围为[0,26)),
将当前数字+'A'(范围变成['A', 26+'A') 即 ['A', 25+'A'] => ['A', 'Z'])

2.将字符'A'转换为字符串"A": 用string(); 将数字10转换为字符串"10", 用strconv.ItoA()
*/

func convertToTitle(columnNumber int) string {
	ans := ""
	t := 0
	for columnNumber > 0 {
		columnNumber--
		t = columnNumber % 26
		ans = string(t+'A') + ans
		columnNumber /= 26
	}
	return ans
}

func convertToTitle1(columnNumber int) string {
	ans := ""
	t := 0
	for columnNumber > 0 {
		t = columnNumber % 26
		if t == 0 {
			ans = "Z" + ans
			columnNumber -= 26
		} else {
			ans = strconv.Itoa(t+'A'-1) + ans
		}
		columnNumber /= 26
	}
	return ans
}